package maven;

import java.io.File;
import java.io.FileFilter;
import java.io.FilenameFilter;

public class IOStreamUtil {

	public static void main(String args[]) throws Exception {
		IOStreamUtil service = new IOStreamUtil();

		String repositoryPath = "H:\\maven-3.2.1\\conf\\repository";
		// filterFilesName(repositoryPath, ".doc");
		// System.out.println();
		// filterFiles1(repositoryPath, ".doc");
		// System.out.println();
		// filterFiles2(repositoryPath, ".doc");

		service.delete(repositoryPath);

		String name = "S04";
		// String repositoryPath = "G:\\电影\\邪恶力量\\" + name;
		// service.reName(repositoryPath, name);
	}

	/**
	 * 根据指定规则筛选文件名
	 *
	 * @param path 目录路径
	 * @param fileName 文件名关键字
	 * @return 符合规则的文件名
	 */
	public static String[] filterFilesName(String path, String fileName) {
		return new File(path).list(new FilenameFilter() {
			@Override
			public boolean accept(File dir, String name) {
				// dir 父目录File，谁调用了 listFiles 就是谁
				// name 是遍历的文件名
				System.out.println(dir.getAbsolutePath());
				System.out.println(name);
				return name.contains(fileName);
			}
		});
	}

	/**
	 * 根据指定规则筛选文件
	 *
	 * @param path 目录路径
	 * @param fileName 文件名关键字
	 * @return 符合规则的文件
	 */
	public static File[] filterFiles1(String path, String fileName) {
		return new File(path).listFiles(new FilenameFilter() {
			@Override
			public boolean accept(File dir, String name) {
				// dir 父目录File，谁调用了 listFiles 就是谁
				// name 是遍历的文件名
				System.out.println(dir.getAbsolutePath());
				System.out.println(name);
				return name.contains(fileName);
			}
		});
	}

	/**
	 * 根据指定规则筛选文件
	 *
	 * @param path 目录路径
	 * @param fileName 文件名关键字
	 * @return 符合规则的文件
	 */
	public static File[] filterFiles2(String path, String fileName) {
		return new File(path).listFiles(new FileFilter() {
			@Override
			public boolean accept(File pathname) {
				// pathname 是遍历出来的文件对象（包括目录类型）
				// System.out.println(pathname.getAbsolutePath());
				return pathname.getName().contains(fileName);
			}
		});
	}

	/**
	 * 文件删除
	 * 
	 * @param path
	 *            文件夹的路径
	 */
	public void delete(String path) {
		File file = new File(path);
		delete(file);
	}

	public void delete(File file) {
		File[] files = file.listFiles();
		for (int i = 0; i < files.length; i++) {
			File fileDetail = files[i];
			if (fileDetail.isDirectory()) {
				delete(fileDetail);
				System.out.println("删除文件夹:" + fileDetail.getAbsolutePath());
			} else {
				// if(fileDetail.getDisplayName().endsWith(".lastUpdated")){
				if (fileDetail.getName().endsWith(".json")) {
					fileDetail.delete();
					System.out.println("删除文件:" + fileDetail.getAbsolutePath());
				}
			}
		}
	}

	/**
	 * 文件重命名
	 * 
	 * @param path
	 *            文件夹路径
	 */
	public void reName(String path, String name) {
		File file = new File(path);
		reName(file, name);
	}

	public void reName(File file, String name) {
		File[] files = file.listFiles();
		for (int i = 0; i < files.length; i++) {
			File fileDetail = files[i];
			if (fileDetail.isDirectory() && fileDetail.getName().equals(name)) {
				reName(fileDetail, null);
				System.out.println("开始扫描文件夹:" + fileDetail.getAbsolutePath());
			} else {
				// if(fileDetail.getDisplayName().endsWith(".lastUpdated")){
				if (fileDetail.getName().contains(name)) {
					System.out.println("ReName:" + fileDetail.getName());
					File newFile = new File(fileDetail.getParent()
							+ "/邪恶力量."
							+ fileDetail.getName().substring(fileDetail.getName().indexOf(name),
									fileDetail.getName().indexOf(name) + 6)
							+ fileDetail.getName().substring(fileDetail.getName().lastIndexOf(".")));
					fileDetail.renameTo(newFile);
					System.out.println("TO:" + newFile.getName());
					System.out.println("-----------------------------------------------------------------------------");
				} else {
					System.out.println("重命名失败：" + fileDetail.getName());
				}
			}
		}
	}

}
